<?php
//人类接口
interface IHuman
{

    function GetName();

}

//男人类，实现人类接口
class ManClass implements IHuman
{
    //获取姓名方法
    public function GetName()
    {
        return "I'm man."."<br>";

    }

}

//女人类，实现人类接口
class WomanClass implements IHuman
{
    //获取姓名方法
    public function GetName()
    {
        return "I'm Woman."."<br>";

    }

}

//类工厂，根据需要生产不同实例对象返回
class ManFactory
{
    //根据参数获取实例对象
    public function GetIHuman($IHuman="man")
    {
        if($IHuman=="woman")
        {
            return new WomanClass();
        }
        else if($IHuman=="man")
        {
            return new ManClass();
        }
        else
        {
            return null;
        }

    }
    //直接获取woman类
    public function GetWoman()
    {
        return new WomanClass();
        //return new ManClass();
    }
    //直接获取man类
    public function  GetMan()
    {

        return new ManClass();
    }
}

$ManFactory=new ManFactory();

$ManClass=$ManFactory->GetIHuman();

echo $ManClass->GetName();

$IHuman=$ManFactory->GetIHuman("woman");

echo $IHuman->GetName();

$Woman=$ManFactory->GetWoman();

echo $Woman->GetName();

$Man=$ManFactory->GetMan();

echo $Man->GetName();